/**
 * @param {number[]} nums
 * @param {number} k
 * @return {boolean}
 */
var containsNearbyDuplicate = function (nums, k) {
  const map = new Map(); // 存储数字及其最后出现的索引

  for (let i = 0; i < nums.length; i++) {
    const num = nums[i];

    // 如果数字已存在且距离不超过k，返回true
    if (map.has(num) && i - map.get(num) <= k) {
      return true;
    }

    // 更新数字的最后出现位置
    map.set(num, i);
  }

  return false; // 未找到符合条件的重复元素
};